using UnityEngine;
using System.Collections;

public class Interface : MonoBehaviour
{
	public LinhaProduto[] 	menu;
	public ArrayList 		itens;
	public GUISkin 			guiskin;
	private bool[] 			mostrar;
	private float[] 		somaY, subSomaY;
	private int 			ultSelecionado = -1;
	private float 			clicY, subClicY, n;
	private Vector2 		scrollPosition = Vector2.zero;
	// Use this for initialization
	void Start ()
	{
		mostrar = new bool[menu.Length];
		somaY = new float[menu.Length];
	}

	// Update is called once per frame
	void OnGUI ()
	{
		GUI.skin = guiskin;
		GUI.BeginGroup (new Rect (0, 0, 256, 768));
		
		MenuPrincipal ();
		
		GUI.EndGroup ();
	}

	void MenuPrincipal ()
	{
		for (int l = 0; l < menu.Length; l++) {
			if (GUI.Button (new Rect (0, 50 + (23 * l) + somaY[l], 165, 23), menu[l].nome)) {
				if (!mostrar[l]) {
					n = menu[l].tipoDoObjeto.Length;
					//n = (menu[l].objetos.Length / 3.0f);
					//n = (n - (int)n) > 0 ? (int)n + 1 : (int)n;
					for (int s = 0; s < somaY.Length; s++)
						somaY[s] = 0;
					for (int s = (l + 1); s < somaY.Length; s++)
						somaY[s] = 23 * n;
					for (var i = 0; i < n; i++)
						menu[l].tipoDoObjeto[i].mostrar = false;
					for (var i = 0; i < mostrar.Length; i++)
						mostrar[i] = false;
					mostrar[l] = true;
					clicY = 50 + (23 * l) + somaY[l];
					subSomaY = new float[menu[l].tipoDoObjeto.Length];
					for (var i = 0; i < subSomaY.Length; i++)
						subSomaY[i] = clicY;
				} else {
					for (int s = 0; s < somaY.Length; s++)
						somaY[s] = 0;
					for (var i = 0; i < mostrar.Length; i++)
						mostrar[i] = false;
				}
			}
			
			if (mostrar[l]) {
				var tipoDoObjeto = menu[l].tipoDoObjeto;
				for (int t = 0; t < tipoDoObjeto.Length; t++)
				{
					if (GUI.Button (new Rect (0, (23 + subSomaY[t]) + (23 * t), 165, 23), tipoDoObjeto[t].nome)) {
						if (!tipoDoObjeto[t].mostrar) {
							for (int s = 0; s < somaY.Length; s++)
								somaY[s] = 0;
							for (int s = (l + 1); s < somaY.Length; s++)
							{
								if (tipoDoObjeto[t].objetos.Length > 3)
									somaY[s] = (23 * n) + (23 * 3);
								else
									somaY[s] = (23 * n) + (23 * tipoDoObjeto[t].objetos.Length);
							}
							for (var i = 0; i < tipoDoObjeto.Length; i++)
								subSomaY[i] = clicY;
							for (var i = (t + 1); i < tipoDoObjeto.Length; i++)
							{
								if (tipoDoObjeto[t].objetos.Length > 3)
									subSomaY[i] = clicY + (23 * 3);
								else
									subSomaY[i] = clicY + (23 * tipoDoObjeto[t].objetos.Length);
							}
							for (var i = 0; i < tipoDoObjeto.Length; i++)
								tipoDoObjeto[i].mostrar = false;
							tipoDoObjeto[t].mostrar = true;
							subClicY = 48 + (23 * t) + subSomaY[t];
							scrollPosition = Vector2.zero;
						} else {
							for (int s = 0; s < somaY.Length; s++)
								somaY[s] = 0;
							for (int s = (l + 1); s < somaY.Length; s++)
								somaY[s] = 23 * n;
							for (var i = (t + 1); i < tipoDoObjeto.Length; i++)
								subSomaY[i] = clicY;
							if (tipoDoObjeto[t].mostrar)
								tipoDoObjeto[t].mostrar = false;
						}
					}
					
					if (tipoDoObjeto[t].mostrar)
					{
						var o = tipoDoObjeto[t].objetos;
						if (o.Length > 0) {
							if (o.Length > 3)
								scrollPosition = GUI.BeginScrollView(new Rect (0, subClicY, 165, 23 * 3), scrollPosition, new Rect(0, 0, 130, 23 * o.Length), false, true);
							for (int i = 0; i < o.Length; i++) {
								if (o.Length > 3)
									o[i].selecionado = GUI.Toggle (new Rect (0, (23 * i), 150, 23), o[i].selecionado, new GUIContent (o[i].nome, "S" + i));
								else
									o[i].selecionado = GUI.Toggle (new Rect (0, subClicY + (23 * i), 150, 23), o[i].selecionado, new GUIContent (o[i].nome, "S" + i));
								if (ultSelecionado != i && o[i].selecionado) {
									if (ultSelecionado != -1)
										o[ultSelecionado].selecionado = false;
									ultSelecionado = i;
								}
							}
							if (o.Length > 3)
								GUI.EndScrollView();
						}
					} else {
						var o = tipoDoObjeto[t].objetos;
						if (ultSelecionado != -1) {
							if (o[ultSelecionado].selecionado) {
								o[ultSelecionado].selecionado = false;
								ultSelecionado = -1;
							}
						}
					}
				}
			}
		}
	}

	void SubMenu ()
	{
		/*if (mostrar[t]) {
			var o = tipoDoObjeto[t].objetos;
			if (o.Length > 0) {
				int k = 0, j = 0;
				for (int i = 0; i < o.Length; i++) {
					if (k > 2) {
						j++;
						k = 0;
					}
					o[i].selecionado = GUI.Toggle (new Rect (10 + (100 * k), 40 + (50 * j) + clicY, 40, 40), o[i].selecionado, new GUIContent (o[i].nome, "S" + i));
					if (ultSelecionado != i && o[i].selecionado) {
						if (ultSelecionado != -1)
							o[ultSelecionado].selecionado = false;
						ultSelecionado = i;
					}
					k++;
				}
			} 
		} else {
			var o = tipoDoObjeto[t].objetos;
			if (ultSelecionado != -1) {
				if (o[ultSelecionado].selecionado) {
					o[ultSelecionado].selecionado = false;
					ultSelecionado = -1;
				}
			}
		}*/
	}
}
